// Copyright 2021-2025 Buf Technologies, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// @generated by protoc-gen-es v2.10.1 with parameter "target=ts,import_extension=js"
// @generated from file extra/valid_types.proto (package spec, edition 2023)
/* eslint-disable */

import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
import type { Timestamp } from "@bufbuild/protobuf/wkt";
import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
import { file_extra_minimal_validate } from "./minimal-validate_pb.js";
import type { Message } from "@bufbuild/protobuf";

/**
 * Describes the file extra/valid_types.proto.
 */
export const file_extra_valid_types: GenFile = /*@__PURE__*/
  fileDesc("ChdleHRyYS92YWxpZF90eXBlcy5wcm90bxIEc3BlYyKfDAoGVlR5cGVzEh8KA21zZxgBIAEoCzISLnNwZWMuVlR5cGVzLk90aGVyEjAKDHJlcXVpcmVkX21zZxgCIAEoCzISLnNwZWMuVlR5cGVzLk90aGVyQga6SAPIAQESQQoacmVxdWlyZWRfbXNnX2lnbm9yZV9hbHdheXMYAyABKAsyEi5zcGVjLlZUeXBlcy5PdGhlckIJukgGyAEB2AEDEjoKFm1zZ19pZ25vcmVfdW5wb3B1bGF0ZWQYBCABKAsyEi5zcGVjLlZUeXBlcy5PdGhlckIGukgD2AEBEjYKEm1zZ19pZ25vcmVfZGVmYXVsdBgFIAEoCzISLnNwZWMuVlR5cGVzLk90aGVyQga6SAPYAQISKAoMcmVwZWF0ZWRfbXNnGAYgAygLMhIuc3BlYy5WVHlwZXMuT3RoZXISPgoacmVwZWF0ZWRfbXNnX2Fsd2F5c19pZ25vcmUYCCADKAsyEi5zcGVjLlZUeXBlcy5PdGhlckIGukgD2AEDEkkKIHJlcGVhdGVkX21zZ19hbHdheXNfaWdub3JlX2l0ZW1zGAkgAygLMhIuc3BlYy5WVHlwZXMuT3RoZXJCC7pICJIBBSID2AEDEk4KJXJlcGVhdGVkX21zZ19pZ25vcmVfdW5wb3B1bGF0ZWRfaXRlbXMYCiADKAsyEi5zcGVjLlZUeXBlcy5PdGhlckILukgIkgEFIgPYAQESSgohcmVwZWF0ZWRfbXNnX2lnbm9yZV9kZWZhdWx0X2l0ZW1zGAsgAygLMhIuc3BlYy5WVHlwZXMuT3RoZXJCC7pICJIBBSID2AECEiIKA21hcBgMIAMoCzIVLnNwZWMuVlR5cGVzLk1hcEVudHJ5EkQKEW1hcF9pZ25vcmVfYWx3YXlzGA0gAygLMiEuc3BlYy5WVHlwZXMuTWFwSWdub3JlQWx3YXlzRW50cnlCBrpIA9gBAxJWChhtYXBfYWx3YXlzX2lnbm9yZV92YWx1ZXMYDiADKAsyJy5zcGVjLlZUeXBlcy5NYXBBbHdheXNJZ25vcmVWYWx1ZXNFbnRyeUILukgImgEFKgPYAQMSYAodbWFwX2lnbm9yZV91bnBvcHVsYXRlZF92YWx1ZXMYDyADKAsyLC5zcGVjLlZUeXBlcy5NYXBJZ25vcmVVbnBvcHVsYXRlZFZhbHVlc0VudHJ5Qgu6SAiaAQUqA9gBARJYChltYXBfaWdub3JlX2RlZmF1bHRfdmFsdWVzGBAgAygLMiguc3BlYy5WVHlwZXMuTWFwSWdub3JlRGVmYXVsdFZhbHVlc0VudHJ5Qgu6SAiaAQUqA9gBAhI2ChNsZWdhY3lfcmVxdWlyZWRfbXNnGBQgASgLMhIuc3BlYy5WVHlwZXMuT3RoZXJCBaoBAggDEkoKIWxlZ2FjeV9yZXF1aXJlZF9tc2dfaWdub3JlX2Fsd2F5cxgVIAEoCzISLnNwZWMuVlR5cGVzLk90aGVyQguqAQIIA7pIA9gBAxInCgN3a3QYFiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wGj4KCE1hcEVudHJ5EgsKA2tleRgBIAEoCRIhCgV2YWx1ZRgCIAEoCzISLnNwZWMuVlR5cGVzLk90aGVyOgI4ARpKChRNYXBJZ25vcmVBbHdheXNFbnRyeRILCgNrZXkYASABKAkSIQoFdmFsdWUYAiABKAsyEi5zcGVjLlZUeXBlcy5PdGhlcjoCOAEaUAoaTWFwQWx3YXlzSWdub3JlVmFsdWVzRW50cnkSCwoDa2V5GAEgASgJEiEKBXZhbHVlGAIgASgLMhIuc3BlYy5WVHlwZXMuT3RoZXI6AjgBGlUKH01hcElnbm9yZVVucG9wdWxhdGVkVmFsdWVzRW50cnkSCwoDa2V5GAEgASgJEiEKBXZhbHVlGAIgASgLMhIuc3BlYy5WVHlwZXMuT3RoZXI6AjgBGlEKG01hcElnbm9yZURlZmF1bHRWYWx1ZXNFbnRyeRILCgNrZXkYASABKAkSIQoFdmFsdWUYAiABKAsyEi5zcGVjLlZUeXBlcy5PdGhlcjoCOAEaBwoFT3RoZXIiJAoHVlR5cGVzMhIZCgNtc2cYASABKAsyDC5zcGVjLlZUeXBlc2IIZWRpdGlvbnNw6Ac", [file_google_protobuf_timestamp, file_extra_minimal_validate]);

/**
 * @generated from message spec.VTypes
 */
export type VTypes = Message<"spec.VTypes"> & {
  /**
   * In the generated valid type, the property should:
   * - be optional
   * - refer to the valid type for Other
   *
   * @generated from field: spec.VTypes.Other msg = 1;
   */
  msg?: VTypes_Other;

  /**
   * In the generated valid type, this property should:
   * - not be optional
   * - refer to the valid type for Other
   *
   * @generated from field: spec.VTypes.Other required_msg = 2;
   */
  requiredMsg?: VTypes_Other;

  /**
   * In the generated valid type, this property should:
   * - be optional
   * - refer to the regular type for Other
   *
   * @generated from field: spec.VTypes.Other required_msg_ignore_always = 3;
   */
  requiredMsgIgnoreAlways?: VTypes_Other;

  /**
   * In the generated valid type, this property should:
   * - be optional
   * - refer to the valid type for Other
   *
   * @generated from field: spec.VTypes.Other msg_ignore_unpopulated = 4;
   */
  msgIgnoreUnpopulated?: VTypes_Other;

  /**
   * In the generated valid type, this property should be the same as the regular type
   *
   * @generated from field: spec.VTypes.Other msg_ignore_default = 5;
   */
  msgIgnoreDefault?: VTypes_Other;

  /**
   * In the generated valid type, this property should:
   * - not be optional (lists never are)
   * - refer to the valid type for Other
   *
   * @generated from field: repeated spec.VTypes.Other repeated_msg = 6;
   */
  repeatedMsg: VTypes_Other[];

  /**
   * In the generated valid type, this property should:
   * - not be optional (lists never are)
   * - refer to the regular type for Other
   *
   * @generated from field: repeated spec.VTypes.Other repeated_msg_always_ignore = 8;
   */
  repeatedMsgAlwaysIgnore: VTypes_Other[];

  /**
   * In the generated valid type, this property should:
   * - not be optional (lists never are)
   * - refer to the regular type for Other
   *
   * @generated from field: repeated spec.VTypes.Other repeated_msg_always_ignore_items = 9;
   */
  repeatedMsgAlwaysIgnoreItems: VTypes_Other[];

  /**
   * In the generated valid type, this property should:
   * - not be optional (lists never are)
   * - refer to the valid type for Other, because messages in a list are never unpopulated
   *
   * @generated from field: repeated spec.VTypes.Other repeated_msg_ignore_unpopulated_items = 10;
   */
  repeatedMsgIgnoreUnpopulatedItems: VTypes_Other[];

  /**
   * In the generated valid type, this property should be the same as the regular type
   *
   * @generated from field: repeated spec.VTypes.Other repeated_msg_ignore_default_items = 11;
   */
  repeatedMsgIgnoreDefaultItems: VTypes_Other[];

  /**
   * In the generated valid type, this property should:
   * - not be optional (maps never are)
   * - refer to the valid type for Other
   *
   * @generated from field: map<string, spec.VTypes.Other> map = 12;
   */
  map: { [key: string]: VTypes_Other };

  /**
   * In the generated valid type, this property should:
   * - not be optional (maps never are)
   * - refer to the regular type for Other
   *
   * @generated from field: map<string, spec.VTypes.Other> map_ignore_always = 13;
   */
  mapIgnoreAlways: { [key: string]: VTypes_Other };

  /**
   * In the generated valid type, this property should:
   * - not be optional (maps never are)
   * - refer to the regular type for Other
   *
   * @generated from field: map<string, spec.VTypes.Other> map_always_ignore_values = 14;
   */
  mapAlwaysIgnoreValues: { [key: string]: VTypes_Other };

  /**
   * In the generated valid type, this property should:
   * - not be optional (maps never are)
   * - refer to the regular type for Other, because map entries are never unpopulated
   *
   * @generated from field: map<string, spec.VTypes.Other> map_ignore_unpopulated_values = 15;
   */
  mapIgnoreUnpopulatedValues: { [key: string]: VTypes_Other };

  /**
   * In the generated valid type, this property should be the same as the regular type
   *
   * @generated from field: map<string, spec.VTypes.Other> map_ignore_default_values = 16;
   */
  mapIgnoreDefaultValues: { [key: string]: VTypes_Other };

  /**
   * In the generated valid type, this property should:
   * - not be optional
   * - refer to the valid type for Other
   *
   * @generated from field: spec.VTypes.Other legacy_required_msg = 20 [features.field_presence = LEGACY_REQUIRED];
   */
  legacyRequiredMsg?: VTypes_Other;

  /**
   * In the generated valid type, this property should:
   * - not be optional
   * - refer to the regular type for Other, because IGNORE_ALWAYS is set
   *
   * @generated from field: spec.VTypes.Other legacy_required_msg_ignore_always = 21 [features.field_presence = LEGACY_REQUIRED];
   */
  legacyRequiredMsgIgnoreAlways?: VTypes_Other;

  /**
   * In the generated valid type, this property should point to the regular
   * type, since we currently do not generate Valid types for the WKT.
   *
   * @generated from field: google.protobuf.Timestamp wkt = 22;
   */
  wkt?: Timestamp;
};

/**
 * Describes the message spec.VTypes.
 * Use `create(VTypesSchema)` to create a new message.
 */
export const VTypesSchema: GenMessage<VTypes> = /*@__PURE__*/
  messageDesc(file_extra_valid_types, 0);

/**
 * @generated from message spec.VTypes.Other
 */
export type VTypes_Other = Message<"spec.VTypes.Other"> & {
};

/**
 * Describes the message spec.VTypes.Other.
 * Use `create(VTypes_OtherSchema)` to create a new message.
 */
export const VTypes_OtherSchema: GenMessage<VTypes_Other> = /*@__PURE__*/
  messageDesc(file_extra_valid_types, 0, 0);

/**
 * This message does not have required fields, but still needs a valid type
 * because it has a message field that uses required fields.
 *
 * @generated from message spec.VTypes2
 */
export type VTypes2 = Message<"spec.VTypes2"> & {
  /**
   * In the generated valid type, this property should point to a valid type.
   *
   * @generated from field: spec.VTypes msg = 1;
   */
  msg?: VTypes;
};

/**
 * Describes the message spec.VTypes2.
 * Use `create(VTypes2Schema)` to create a new message.
 */
export const VTypes2Schema: GenMessage<VTypes2> = /*@__PURE__*/
  messageDesc(file_extra_valid_types, 1);

